<?php

//2.5.6.2 松散比较 ==
var_dump(true == false); //bool(false)
var_dump(true > false);  //bool(true)
//逻辑值和其他类型比较，其他都转换为逻辑值。
var_dump(true == 50); //bool(true) 数值：0为false，非0为true
var_dump(true == "hello"); //bool(true) 字符串：""和"0"为false，其他都为true
var_dump(true == []); //bool(false)  null和 [] 为false
//数值和字符串比较，若is_numeric(字符串)为true，则转换为数值进行比较，否则转换为字符串进行比较
var_dump(is_numeric("  123  ")); //bool(true)
var_dump(100 == "1e2"); //bool(true) // "1e2"是100
var_dump(100 > '9a'); //bool(false) 100 是 "100"
//严格比较就是值和类型都相同才相等
var_dump(true === 1); // bool(false)
var_dump(0 == false); //bool(true)
var_dump(0 === false); //bool(false)
//条件运算符
var_dump(123 ? 555 : 666); //int(555)
var_dump("Hello" ?: "world"); //string(5) "Hello"
var_dump("0" ?: "world"); //string(5) "world"
//2.5.8 NULL 合并运算符
var_dump("" ?? 12345); //string(0) ""
var_dump($m ?? "1234567"); //string(7) "1234567"
//字符串运算符. 拼接字符串
var_dump(123 . 456); //string(6) "123456"

//数组解构
$a = [98, 88, 77];
$p1 = $a[0];
$p2 = $a[1];
$p3 = $a[2];
echo "p1=$p1, p2=$p2, p3=$p3\n"; //p1=98, p2=88, p3=77
[$p1, $p2, $p3] = $a;
echo "p1=$p1, p2=$p2, p3=$p3\n"; //p1=98, p2=88, p3=77
$a = ["name" => "张三", "age" => 19];
['name' => $n, 'age' => $age] = $a;
echo "name=$n, age=$age\n"; //name=张三, age=19
//交换两个变量的值
$b1 = 123;
$b2 = 456;
[$b1, $b2] = [$b2, $b1];
echo "b1=$b1, b2=$b2\n";

//3.3 数组解包, ...前缀的一个array可以被展开到当前位置
$a1 = ["age" => 20, 44];
$a2 = [11, 22, ...$a, 33, ...$a1]; //整数键重新编号，重复字符串键会覆盖
print_r($a2);




